package com.ccit.springbootlaw.service.impl;

import com.ccit.springbootlaw.mapper.LawMapper;
import com.ccit.springbootlaw.pojo.Law;
import com.ccit.springbootlaw.pojo.PageBean;
import com.ccit.springbootlaw.service.LawService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * 法律服务实现类
 * 实现了LawService接口，提供了法律相关的业务逻辑
 */
@Service
public class LawServiceImpl implements LawService {

    @Autowired
    private LawMapper lawMapper;

    /**
     * 根据ID查询法律信息
     *
     * @param id 法律ID
     * @return 返回找到的法律对象，如果未找到则返回null
     */
    @Override
    public Law findById(int id) {
        return lawMapper.findById(id);
    }

    /**
     * 根据多条件查询法律信息
     *
     * @param law       包含查询条件的法律对象
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 返回符合条件的法律列表
     */
    @Override
    public PageBean<Law> findByCriteria(Law law, Date startTime, Date endTime, int page) {
        PageBean<Law> pageBean = new PageBean<>();
        PageHelper.startPage(page / 100, page % 100);
        List<Law> result = lawMapper.findByCriteria(law, startTime, endTime);
        Page<Law> pageInfo = (Page<Law>) result;
        pageBean.setTotal(pageInfo.getTotal());
        pageBean.setRows(pageInfo.getResult());
        pageBean.setPage(page / 100);
        pageBean.setRowsPerPage(page % 100);
        return pageBean;
    }

    /**
     * 插入新的法律信息
     *
     * @param law 法律对象
     * @return 返回插入操作影响的行数
     */
    @Override
    public int insertLaw(Law law) {
        return lawMapper.insertLaw(law);
    }

    /**
     * 更新法律信息
     *
     * @param law 包含更新信息的法律对象
     * @return 返回更新操作影响的行数
     */
    @Override
    public int updateLaw(Law law) {
        return lawMapper.updateLaw(law);
    }

    /**
     * 删除法律信息
     *
     * @param id 法律ID
     * @return 返回删除操作影响的行数
     */
    @Override
    public int deleteLawById(int id) {
        return lawMapper.deleteLawById(id);
    }

    /**
     * 查询所有法律信息
     *
     * @return 返回所有法律的列表
     */
    @Override
    public PageBean<Law> findAllLaws(int page) {
        PageBean<Law> pageBean = new PageBean<>();
        PageHelper.startPage(page / 100, page % 100);
        List<Law> result = lawMapper.findAllLaws();
        Page<Law> pageInfo = (Page<Law>) result;
        pageBean.setTotal(pageInfo.getTotal());
        pageBean.setRows(pageInfo.getResult());
        pageBean.setPage(page / 100);
        pageBean.setRowsPerPage(page % 100);
        return pageBean;
    }
}